<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class home extends MY_Controller {
	/**
	 * Evita la validacion (enfocado cuando se usa ajax). Ver mas en privilegios_model
	 * @var unknown_type
	 */
	private $excepcion_privilegio = array(
			'home/productos_bajos/');
	
	public function _remap($method){
		$this->carabiner->css(array(
				array('libs/jquery-ui.css', 'screen'),
				array('libs/ui.notify.css', 'screen'),
				array('base.css', 'screen')
		));
		$this->carabiner->js(array(
				array('libs/jquery.min.js'),
				array('libs/jquery-ui.js'),
				array('libs/jquery.notify.min.js'),
				array('general/alertas.js'),
		));
		
		$this->load->model("empleados_model");
		if($this->empleados_model->checkSession()){
			$this->empleados_model->excepcion_privilegio = $this->excepcion_privilegio;
			$this->info_empleado = $this->empleados_model->getInfoEmpleado($_SESSION['id_empleado'], true);
			$this->{$method}();
		}else
			$this->{'login'}();
	}
	
	public function index(){
		$this->carabiner->css(array(
				array('libs/jquery.treeview.css', 'screen'),
				array('libs/jquery.msgbox.css', 'screen'),
				array('general/forms.css', 'screen'),
				array('general/tables.css', 'screen')
		));
		$this->carabiner->js(array(
				array('libs/jquery.treeview.js'),
				array('libs/jquery.msgbox.min.js'),
				array('general/msgbox.js'),
				array('general/home.js')
		));
		
		$params['info_empleado'] = $this->info_empleado['info']; //info empleado
		$params['seo'] = array(
			'titulo' => 'Panel de Administración'
		);
		
		$this->load->model('privilegios_model');
		
		//Productos bajos de inventario
		$params['prod_bajos'] = $this->db->query("SELECT Count(id_producto) AS bajos FROM reportes_costo_existencias1 WHERE stock_min > existencia")->result();
		
		//Alertas cotizaciones
		$params['alertas'] 		= $this->db->query("SELECT * FROM alertas WHERE tabla_obj = 'cotizaciones' AND Date(now()) > Date(fecha_vencimiento)")->result();
		
		$params['ordenest'] 	= $this->db->query("SELECT * FROM alertas WHERE tabla_obj = 'ordenest' AND Date(now()) >= Date(fecha_vencimiento)")->result();
		
		$params['prospectos'] 	= $this->db->query("SELECT * FROM alertas WHERE tabla_obj = 'prospectos' AND Date(now()) >= Date(fecha_vencimiento)")->result();
		
		//cumple años empleados
		$params['cumple_anios'] = $this->db->query("
				SELECT *, (fecha_cumple - now()::date) AS dias FROM
					(SELECT 
						(apellido_materno || ' ' || apellido_paterno || ' ' || nombre) AS nombre,
						(date_part('year', now()) || '-' || date_part('month', fecha_nacimiento) || '-' || date_part('day', fecha_nacimiento))::date AS fecha_cumple 
					FROM empleados 
					WHERE status = 'contratado' AND fecha_nacimiento IS NOT NULL) as T
				WHERE (fecha_cumple - now()::date) <= 3 AND (fecha_cumple - now()::date) >= 0")->result();
		
		//Reporte facturas diarias
		if($this->empleados_model->tienePrivilegioDe('', 'facturacion_rpt/revisar/')){
			//observaciones
			$params['rpt_fdia_obs'] = $this->db->query("
				SELECT f.id_factura, cs.nombre_fiscal, f.serie, f.folio, Date(f.fecha) AS fecha, f.observaciones
				FROM facturas AS f
					INNER JOIN clientes_sucursales AS cs ON cs.id_sucursal = f.id_cliente
				WHERE f.status <> 'ca' AND f.revisado = 'f' AND f.observaciones <> ''
				ORDER BY (f.serie, f.folio) ASC
			")->result();
			//Dias por cerrar
			$params['rpt_ddias'] = $this->db->query("
				SELECT id_diarias_rpt, Date(fecha) AS fecha, status
				FROM facturas_diarias_rpt
				WHERE status = 'f'
				ORDER BY fecha ASC
			")->result();
		}
		
		
		$this->load->view('panel/header', $params);
		$this->load->view('panel/general/menu', $params);
		$this->load->view('panel/general/home', $params);
		$this->load->view('panel/footer');
	}
	
	
	/**
	 * Genera el reporte productos bajos del stock
	 */
	public function productos_bajos(){
		$prod_bajos = $this->db->query("SELECT * FROM reportes_costo_existencias1 WHERE stock_min > existencia")->result();
		
		$this->load->library('mypdf');
		// Creación del objeto de la clase heredada
		$pdf = new MYpdf('P', 'mm', 'Letter');
		$pdf->show_head = true;
		$pdf->titulo2 = 'Reporte Productos Bajos de Inventario';
		$pdf->AliasNbPages();
		$pdf->AddPage();
			
		$links = array('', '', '', '');
		$aligns = array('C', 'C', 'C', 'C');
		$widths1 = array(98, 35, 35, 35);
		$header1 = array('Producto', 'Existencia', 'Stock min', 'Faltante');
	
		foreach($prod_bajos as $key => $item){
			if($pdf->GetY() >= $pdf->limiteY || $key == 0){ //salta de pagina si exede el max
				if($key > 0)
					$pdf->AddPage();
				
				$pdf->SetFont('Arial', 'B', 8);
				$pdf->SetTextColor(255, 255, 255);
				$pdf->SetFillColor(160, 160, 160);
				$pdf->SetX(6);
				$pdf->SetAligns($aligns);
				$pdf->SetWidths($widths1);
				$pdf->Row($header1, true);
			}
			
			$pdf->SetFont('Arial', '', 8);
			$pdf->SetTextColor(0,0,0);
			
			$datarow = array($item->nombre,
					$item->existencia,
					$item->stock_min,
					$item->stock_min - $item->existencia
			);
			
			$pdf->SetX(6);
			$pdf->SetAligns($aligns);
			$pdf->SetWidths($widths1);
			$pdf->Row($datarow, false);
		}
			
		$pdf->Output('reporte.pdf', 'I');
	}
	
	/**
	 * Pospone las alertas unos dias mas
	 */
	public function posponer(){
		if(isset($_GET['del']{0})){ //elimina la alerta
			$this->db->delete('alertas', "tabla_obj = '".$_GET['tblo']."' AND id_obj = '".$_GET['ido']."'");
		}else{ //pospone la alerta
			$this->db->set('fecha_vencimiento', '( now() + \'3 days\'::interval )', false);
			$this->db->where("tabla_obj = '".$_GET['tblo']."' AND id_obj = '".$_GET['ido']."'");
			$this->db->update("alertas");
		}
		
		header("Location: ".base_url('panel/home/'));
	}
	
	
	
	
	/**
	 * carga el login para entrar al panel
	 */
	public function login(){
		$this->carabiner->css(array(
				array('general/forms.css', 'screen')
		));
		
		$params['seo'] = array(
			'titulo' => 'Login'
		);
		
		$this->load->library('form_validation');
		$rules = array(
			array('field'	=> 'usuario',
				'label'		=> 'Usuario',
				'rules'		=> 'required'),
			array('field'	=> 'pass',
				'label'		=> 'Contraseña',
				'rules'		=> 'required')
		);
		$this->form_validation->set_rules($rules);
		if($this->form_validation->run() == FALSE){
			$params['frm_errors'] = array(
					'title' => 'Error al Iniciar Sesión!', 
					'msg' => preg_replace("[\n|\r|\n\r]", '', validation_errors()), 
					'ico' => 'error');
		}else{
			$respons = $this->empleados_model->login();
			if($respons[0])
				redirect(base_url('panel/home'));
			else{
				$params['frm_errors'] = array(
					'title' => 'Error al Iniciar Sesión!',
					'msg' => $respons[1],
					'ico' => 'error');
			}
		}
		
		$this->load->view('panel/header', $params);
		$this->load->view('panel/general/login', $params);
		$this->load->view('panel/footer');
	}
	
	/**
	 * cierra la sesion del usuario
	 */
	public function logout(){
		session_destroy();
		redirect(base_url('panel/home'));
	}
}

?>